package org.i0o.webplus.web.base.action;

import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.i0o.webplus.commons.Scope;

/**
 * @author <a href="mailto:781131@gmail.com">HTF</a>
 */
public interface WebAction {

	/**
	 * 默认调用方法
	 */
	final String DEFAULT_METHOD_NAME = "initPage";

	/**
	 * 成功字符串
	 */
	final String SUCCESS = "SUCCESS";

	/**
	 * 失败字符串
	 */
	final String FAILURE = "FAILURE";

	/**
	 * 向Request或Session或ApplicationContext中放置Attribute
	 * 
	 * @param key 键
	 * @param value 值
	 * @param scope 作用域
	 */
	void setAttribute(String key, Object value, Scope scope);

	/**
	 * 向Request中放置Attribute
	 * 
	 * @param key 键
	 * @param value 值
	 */
	void setAttribute(String key, Object value);

	/**
	 * 从Request或Session或ApplicationContext中获得一个Attribute
	 * 
	 * @param key
	 * @param scope 取值作用域
	 * @return Attribut的值
	 */
	Object getAttribute(String key, Scope scope);

	/**
	 * 从Request，Session，ApplicationContext中获得一个Attribute ，<br />
	 * 逐层寻找，找到相应的值就返回
	 * 
	 * @param key
	 * @return Attribut的值
	 */
	Object getAttribute(String key);

	/**
	 * 直接输出文本消息
	 * 
	 * @param msgStr 文本字符串
	 */
	void renderText(String msgStr);

	/**
	 * 直接输出纯HTML
	 * 
	 * @param msgStr html字符串
	 */
	void renderHTML(String msgStr);

	/**
	 * 直接输出纯XML
	 * 
	 * @param msgStr xml字符串
	 */
	void renderXML(String msgStr);

	/**
	 * 获取Servlet请求
	 * 
	 * @return HttpServletRequest
	 */
	HttpServletRequest getRequest();

	/**
	 * 获取Servlet响应
	 * 
	 * @return HttpServletResponse
	 */
	HttpServletResponse getResponse();

	/**
	 * 获取用户会话
	 * 
	 * @return HttpSession
	 */
	HttpSession getSession();

	/**
	 * 获取上下文
	 * 
	 * @return ServletContext
	 */
	ServletContext getApplication();

	/**
	 * 返回成功消息
	 */
	void returnSuccess();

	/**
	 * 返回失败消息
	 */
	void returnFailure();

}
